class Solution(object):
    def minimizeXor(self, num1, num2):
        """
        :type num1: int
        :type num2: int
        :rtype: int
        """
        # 计算num2中1的个数
        count = bin(num2).count('1')
        
        # 将num1转换为二进制字符串，并去掉'0b'前缀
        num1_bin = bin(num1)[2:]
        
        # 如果num1的二进制长度小于num2中1的个数，需要补0
        if len(num1_bin) < count:
            num1_bin = '0' * (count - len(num1_bin)) + num1_bin
        
        # 创建一个结果列表，初始化为0
        result = ['0'] * len(num1_bin)
        
        # 贪心策略：优先在num1中1的位置放置1
        # 这样可以最小化XOR的结果
        for i in range(len(num1_bin)):
            if count > 0 and num1_bin[i] == '1':
                result[i] = '1'
                count -= 1
        
        # 如果还有剩余的1需要放置，从右向左放置
        # 这样可以保证结果最小
        for i in range(len(result)-1, -1, -1):
            if count > 0 and result[i] == '0':
                result[i] = '1'
                count -= 1
        
        # 将结果转换为整数
        return int(''.join(result), 2) 